package Atop100.listNode;

import listNodePractice.ListNode;

public class Class2 {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            int sum=l1.val+l2.val;
            int plus=sum>=10?1:0;
            int val=sum%10;
            ListNode p= new ListNode(val);
            ListNode dumpy=new ListNode(-1);
            dumpy.next=p;
            l1=l1.next;
            l2=l2.next;
            while(l1!=null&&l2!=null){
                sum=l1.val+l2.val+plus;
                val=sum%10;
                plus=sum>=10?1:0;
                p.next=new ListNode(val);
                p=p.next;
                l1=l1.next;
                l2=l2.next;
            }
            while(l1!=null){
                sum=l1.val+plus;
                val=sum%10;
                plus=sum>=10?1:0;
                p.next=new ListNode(val);
                p=p.next;
                l1=l1.next;

            }
            while(l2!=null){
                sum=l2.val+plus;
                val=sum%10;
                plus=sum>=10?1:0;
                p.next=new ListNode(val);
                p=p.next;
                l2=l2.next;
            }
            if (plus!=0){
                p.next=new ListNode(plus);
            }

//TODO:2023/10/25 精简的写法 看下面的写法   牛啊
//            while(l1!=null||l2!=null||plus!=0){
//                sum=(l1!=null?l1.val:0)+(l2!=null?l2.val:0)+plus;
//                dumpy.next=new ListNode(sum%10);
//                plus=sum>9?1:0;
//                dumpy=dumpy.next;
//                if(l1!=null){
//                    l1=l1.next;
//                }
//                if(l2!=null){
//                    l2=l2.next;
//                }
//            }

            return dumpy.next;
        }

    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(5);
        ListNode listNode2 = new ListNode(6);
//        ListNode listNode3 = new ListNode(3);
        listNode1.next=listNode2;
//        listNode2.next=listNode3;

        ListNode listNode4 = new ListNode(5);
        ListNode listNode5 = new ListNode(4);
        ListNode listNode6 = new ListNode(9);

        listNode4.next=listNode5;
        listNode5.next=listNode6;
        Class2 class2 = new Class2();
        ListNode listNode = class2.addTwoNumbers(listNode1, listNode4);
        while (listNode!=null){
            System.out.println(listNode.val);
            listNode=listNode.next;
        }


    }
}
